package com.jereh.topnews.demo;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.jereh.topnews.R;

public class PrograssActivity extends AppCompatActivity {

    private ProgressBar progerss_nomal;
    private Button btn_start;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress);
        progerss_nomal = (ProgressBar)findViewById(R.id.progressBar_nomal);
        btn_start =(Button)findViewById(R.id.button_start);
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
//                 ProgressTask task = new ProgressTask();
//                 task .execute("hello world");
                new ProgressTask().execute("helloworld");
            }
        });
        progerss_nomal.setProgress(0); // 进度条复位
    }
    ///*    AsyncTask的构造函数有三个模板参数
//  params 传递给后台任务的数据类型
//  Progress 后台任务的参数的类型
//  Result 后台执行返回的结果类型
//  AsyncTask并不总是需要使用上面的全部3种类型。标识不使用的类型很简单，只需要使用Void类型即可。*/
    class ProgressTask extends AsyncTask<String ,Integer,String> {
        @Override
        protected String doInBackground(String... arg0) {
            //处理后台任务，在后台线程执行  不能再此 有操作UI的操作

            int i = 0;
            for (i = 0; i <= 100; i++) {
                publishProgress(i); // 将会调用onProgressUpdate方法
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return arg0[0];
        }
        @Override
        protected void onPostExecute(String result) {//执行完成后
            Toast.makeText(PrograssActivity.this,result , Toast.LENGTH_SHORT).show();
            progerss_nomal.setProgress(0);
        }
        @Override
        protected void onPreExecute() {//在 doInBackground(Params...)之前被调用，在ui线程执行
            progerss_nomal.setProgress(0); // 进度条复位
            Toast.makeText(PrograssActivity.this, "执行完毕后输出 helloworld", Toast.LENGTH_SHORT).show();
        }
        @Override
        protected void onProgressUpdate(Integer... values) {
            progerss_nomal.setProgress(values[0]);
        }

    }
}
